﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using Hiro.Interfaces;

namespace Hiro.ActivationPoints.Interfaces
{
    /// <summary>
    /// Represents a type that determines which dependencies should be used for property injection.
    /// </summary>
    public interface IPropertyResolver
    {
        /// <summary>
        /// Determines which dependency should be used for property injection.
        /// </summary>
        /// <param name="targetProperty">The target property.</param>
        /// <param name="dependencyContainer">The dependency container that describes the list of dependencies in the application.</param>
        /// <returns>An <see cref="IDependency"/> instance if the dependency can be found; otherwise, it will return <c>null</c>.</returns>
        IDependency Resolve(PropertyInfo targetProperty, IDependencyContainer dependencyContainer);
    }
}
